Lua
Lua è un linguaggio di programmazione dinamico, riflessivo, imperativo e procedurale, utilizzato come linguaggio di scripting di uso generico. È molto usato per programmare i videogiochi. |didascalia = |autore = Roberto Ierusalimschy Luiz Henrique de Figueiredo Waldemar Celes |data = 1993 |versione = (27 Marzo 2013) |utilizzo = generico, scripting, programmazione videogiochi |paradigmi = multi-paradigma: scripting, imperativo (procedurale, orientato agli oggetti), funzionale |tipizzazione = forte, dinamica |specifiche = |estensione = |influenzato_da = C++, CLU, Modula, Scheme, SNOBOL |ha_influenzato = Io, GameMonkey, Squirrel, Falcon, MiniD |sistema_operativo = multipiattaforma |lingua = |licenza = licenza MIT |sito_web = http://www.lua.org/ }}|}} Storia Lua è stato creato nel 1993 da Roberto Ierusalimschy, Luiz Henrique de Figueiredo e Waldemar Celes, membri del Gruppo tecnologico di computer grafica presso l'Università pontificia di Rio de Janeiro, in Brasile. Versioni di Lua precedenti alla versione 5.0 furono rilasciate sotto licenza simile alla licenza BSD. Dalla versione 5.00 Lua è stato rilasciato sotto licenza MIT. Fra i linguaggi relativamente vicini vi sono Icon per il suo schema e Python per la sua semplicità d'uso da parte dei non programmatori. In un articolo pubblicato in Dr. Dobb's Journal, i creatori di Lua affermavano che Lisp e Scheme con la loro tipica struttura dati, la lista, hanno avuto la maggiore influenza sulla decisione di adottare la tabella come struttura dati primaria in Luahttp://www.lua.org/ddj.html. Lua è stato usato in molte applicazioni, commerciali e non commerciali. Caratteristiche del linguaggio Le caratteristiche principali di Lua sono le funzioni, viste come "oggetti" di primo livello e quindi assegnabili a variabili, e l'uso di tabelle come strutture dati generiche. Queste caratteristiche permettono al linguaggio di implementare caratteristiche viste in linguaggi orientati agli oggetti senza che lo stesso lo sia. Esempi Il classico programma "Hello world" può essere scritto come: print "Hello, world!" Il fattoriale è un esempio di funzione ricorsiva: function factorial(n) if n 0 then return 1 end return n * factorial(n - 1) end Questo esempio mostra come sia possibile, in Lua, ridefinire le funzioni del linguaggio: do local oldprint = print -- salva la funzione come era definita da Lua, non salvando il -- valore restituito dalla funzione, ma la funzione stessa print = function(s) -- ridefinisce la funzione print if s "foo" then oldprint("bar") else oldprint(s) end end end Qualunque futura chiamata alla funzione print farà ora riferimento alla nuova funzione, e la vecchia funzione sarà accessibile soltanto dalla nuova versione della stessa. Questo esempio mostra una caratteristica di Lua: la possibilità di definire dinamicamente tabelle (la struttura dati usata dal linguaggio). In questo caso si tratta di una tabella che associa al valore fibsn l'ennesimo numero di Fibonacci. fibs = { 1, 1 } -- valore iniziale per fibs1 and fibs2 setmetatable(fibs, { __index = function(fibs,n) -- chiama questa funzione se il valore fibsn non esiste fibsn = fibsn-2 + fibsn-1 -- calcola e memorizza il valore return fibsn end }) Curiosità * Nel videogioco Fuga da Monkey Island, lo Scumm Bar diventerà un raffinato sushi bar ed il nome verrà cambiato in Lua Bar, a sottolineare l'adozione del nuovo linguaggio di scripting GrimE sviluppato in Lua. * Il firmware delle stampanti Olivetti quali Any_way, Simple_way e My_way, denominato HERCULE, è stato creato con il linguaggio di programmazione dinamico Lua. * Lua è usato molto spesso in ambito PSP per la programmazione di Homebrew. * Il Lua è anche usato per creare Addon compatibili con il MMORPG World of Warcraft * Il Lua è usato anche per creare script con il MMORPG Metin2. * Il Lua è usato anche per creare mod per Garry's Mod. * Con Lua si sono creati inoltre numerosi script e trainer per il pluri-premiato gioco della Rockstar Games GTA IV * Nel videogioco per PC Baldur's Gate II: Shadows of Amn l'intelligenza artificiale dei personaggi è gestita in Lua. È infatti possibile personalizzare interamente questi script per modificare il comportamento predefinito di ogni personaggio in base alle varie circostanze di gioco. * Una mod del videogioco Minecraft, chiamata ComputerCraft, permette di creare dei programmi all'interno del gioco stesso, scrivendoli in linguaggio Lua. Note Collegamenti esterni * Sito ufficiale * Sito wiki degli utilizzatori di Lua Categoria:Linguaggi di programmazione Categoria:Lua